SlackBotを試しに作る際の選択肢としてGlitchの使い方及びメリットについてまとめてみた
業務効率化の一端としてSlackBotの開発及び動作検証を行うスペースにGlitchを使っていますが、Glitchに関する解説記事はそれほど多くは見つからないため試行錯誤を挟むことも多いです。
Glitchのメリットや注意すべきポイント等を触った上でまとめてみました。
Glitchについて
サポートされている言語はJavaScriptあるいはNodeJSのみでのサーバレス開発環境です。Pythonも一応動かせます。利用言語が絞られているAWS Lambdaのようなものです。
Glitch無料プランの場合、作成したプロジェクトは一部リソースを除いてパブリック扱いになります。そして、Glitchの大きな特徴の一つとしてパブリックなプロジェクトに対しては手軽にGitHubのFork宜しく複製が可能です。Remixと呼ばれます。チュートリアル記事に沿って一からコードを組み立てずとも、Remixで準備が整うわけですね。なお、一部のリソースについては複製対象外です。
複製対象外リソースについて
無料プランでは基本的に全てパブリックになりますが、例外的に製作者だけが編集できるファイルとして .env
があります。
自身が作成したプロジェクトの .env
についてはこのように編集ができるのですが、
他のユーザが作成したプロジェクトの .env
については見ることもできません。共同編集者としてのリクエストを出して承諾して貰う必要があります。
実装では以下のように呼び出しを行います。
// .env ENV_NAME=test // xx.js process.env.ENV_NAME
GlitchでのSlackBot作成
Pythonコードになりますが、Slackにてテンプレートが用意されています。BlockKitのチュートリアルも兼ねているので、初めて触る場合はこれがおすすめかもしれません。
とはいえ、nodeベースでもそこまで大変ではありません。手続きとしては以下の記事がまとまっていました。
Remixしたい場合は以下プロジェクトにします。上記記事内のプロジェクトはアクセスできなかったためです。
GitHubからの取り込み
GlitchでGitHubリポジトリを元にプロジェクトを作成する流れとなります。Glitchに手続きが掲載されているため、沿って操作しましょう。
なお、取り込みサイズ上限は無料プランで200MB、有料プランで400MBです。
実装上での注意点
RequestURL指定
Slack側でBot登録する際のRequestURLは https://unique-legend-breeze.glitch.me/slack/events
のような構成で登録します。ドメインにはGlitchアプリのパスを含めて、/slack/events
は固定決め打ちです。
glitch | slackapp |
---|---|
https://glitch.com/dit/#!/XXXX-XXXX-XXXX | https://XXXX-XXXX-XXXX.glitch.me/slack/events |
Botプロセスの維持時間
Glitchの無料プランはプロセス維持が5分までとなります。一度立ったBotは5分立つと接続が切れるため、必要に応じて再起動させます。常設したい場合は有料プラン ($10 per Month) にするか、AWS Lambdaにレスポンス実装を移設するとよいでしょう。
無料プランでのコード公開
無料プランは基本パブリックが前提です。アクセスキー等の文字列であればセキュアに保ちたいなら .env
でカバーできますが、コードそのものをパブリックにしたくない場合は有料プランにするか、Glitchを選択から外すべきです。
あとがき
無料プランとしても、試しに作る場合には十分な環境となっています。
- アクセスレート上限は1時間辺り4000リクエスト
- 月当たりの稼働上限は1000時間
- 起動後5分で停止
- ブラウザ上から編集可能
- 編集後自動で再起動(要追加設定)
- コードのシンタックスチェック機能
- .envファイルの保護
- 依存パッケージ追加時に最新バージョン自動取得
- 外部サイトへの編集ウィンドウ埋め込み
月額$10については以下の要件にメリットが感じられる場合(特にプロセス常駐)は選択肢としても十分かもしれません。
- コードの秘匿
- プロセス常駐